/// @tags:
#include <cstdio>
#include <functional>
#include <iostream>
#include <numeric>
#include <unordered_map>

using std::cin, std::cout, std::endl;

/**
 * On a two-dimensional plane, Takahashi is initially at point (0,0), and his
 * initial health is H.
 * M items to recover health are placed on the plane; the
 * i-th of them is placed at (x_i​,y_i).
 */

namespace BlueQuantum {

constexpr int maxn = 2e5;

char str[maxn + 1];
std::unordered_map<int, int> map[maxn * 2 + 5];

int main() {
  int n, m, h, k;
  cin >> n >> m >> h >> k;
  cin >> (str + 1);

  for (int i = 1; i <= m; ++i) {
    int x, y;
    cin >> x >> y;
    map[x + maxn][y] = 1;
  }

  int x = 0, y = 0;
  for (int i = 1; i <= n; ++i) {
    if (h == 0) {
      cout << "No";
      return 0;
    }
    h--;
    switch (str[i]) {
      case 'U':
        y++;
        break;
      case 'D':
        y--;
        break;
      case 'L':
        x--;
        break;
      case 'R':
        x++;
        break;
    }
    auto iter = map[x + maxn].find(y);
    if (iter != map[x + maxn].end()) {
      if (k > h) {
        h = k;
        map[x + maxn].erase(iter);
      }
    }
  }
  cout << "Yes";
  return 0;
}

}  // namespace BlueQuantum

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("/tmp/CodeTmp/testdata.in", "r", stdin);
  freopen("/tmp/CodeTmp/testdata.out", "w", stdout);
#else
  freopen("C - Dash.in", "r", stdin);
  freopen("C - Dash.out", "w", stdout);
#endif
#endif

  std::ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  return BlueQuantum::main();
}
